#include <iostream>
#include <stdlib.h>
#include <opencv2/opencv.hpp>


int main(int argc, char** argv)
{
    int size[] = {10, 10};
    cv::SparseMat sm(2, size, CV_32F);

    for(int i = 0; i < 10; i++){
        int idx[2];
        // 此处应该需要的是0-1之间的数
        idx[0] = size[0] * (uint)rand() % 10;
        idx[1] = size[1] * (uint)rand() % 10;
        
        sm.ref<float>(idx) += 1.0f;
    }

    // print out the nonzero elements
    cv::SparseMatConstIterator_<float> it = sm.begin<float>();
    cv::SparseMatConstIterator_<float> it_end = sm.end<float>();
    for(; it != it_end; ++it){
        const cv::SparseMat::Node* node = it.node();
        printf(" (%3d,%3d) %f\n", node->idx[0], node->idx[1], *it);
    }

    // printf("%3d", rand());
    // rand() 产生一个随机数整数，0和最大整数之间，无符号数，在转换为int时，可能出现负数
    // rand
    return 0;
}